[BACKEND-61-1] Создать метод POST /api/v1/waste/items

Разработка эндпоинта отправки продуктов в утиль с фиксацией бизнес-причины

Author

Services Task & Simulation Framework Documentation

Published

July 13, 2026

NoteКраткая карточка задачи

  • Инструкция по шагам:
    1. На Шагах 1-2: Реализовать прием запроса от модального окна мобильного приложения «Waste Control». Принять или сгенерировать сквозной X-Request-ID (trace_id).
    2. На Шаге 3: Написать схему Pydantic-валидации входящего тела запроса. Поля: space_type (строго ENUM: HOME, OFFICE), spent_items (массив объектов: food_element_id, quantity), waste_reason (строго ENUM: PROPALO, SPOILT, EXPIRED, OTHER).
    3. Перенаправить валидированный пакет данных по внутреннему gRPC или HTTP-интерфейсу в микросервис waste-service.
    4. Принять пакет данных от backend-api. Обеспечить проброс сквозного заголовка X-Request-ID.
    5. На Шаге 4: Выполнить синхронный gRPC-вызов к нижележащему компоненту fridge-service, вызвав метод MutateBalances и передав структуру spent_items и признак space_type. Поток выполнения блокируется до ответа холодильника.
    6. На Шаге 8-9: При получении успешного gRPC-статуса от fridge-service, вернуть Gateway статус 200 OK для закрытия карточки утилизации на UI мобильного приложения.
    7. На Шаге 10: Сразу после ответа клиенту, в асинхронном режиме (Fire-and-Forget) сформировать и отправить пакет в Kafka-топик bpds.pma.out.process.event с признаком event_type: "WASTED". В Payload сообщения обязательно передать массив списанного, space_type, waste_reason и сквозной trace_id.